package com.huatai.datacenter.feign;

import com.huatai.common.api.R;
import com.huatai.datacenter.entity.PutSingle;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

@FeignClient("ht-datacenter")
public interface TSDBPutClient {
	/**
	 * 接口前缀
	 */
	String API_PREFIX = "/api/put";
	String SINGLE = API_PREFIX + "/single";
	String ASYNC_SINGLE = API_PREFIX + "/asyncsingle";
	String MULTIPLE = API_PREFIX + "multiple";
	String ASYNC_MULTIPLE = API_PREFIX + "/asyncmultiple";
	String SYNC_PUT_DIFFERENCE = API_PREFIX + "syncPutDifference";

	/**
	 * 同步写入
	 *
	 * @param putSingle 单个写入参数
	 * @return 写入结果
	 */
	@PostMapping(SINGLE)
	R<Object> syncPut(@RequestBody PutSingle putSingle);

	/**
	 * 异步写入
	 *
	 * @param putSingle 单个写入参数
	 */
	@PostMapping(ASYNC_SINGLE)
	void asyncPut(@RequestBody PutSingle putSingle);

	/**
	 * 同步写入
	 *
	 * @param putSingles 单个写入参数
	 * @return 写入结果
	 */
	@PostMapping(MULTIPLE)
	R<Boolean> syncPut(List<PutSingle> putSingles);

	/**
	 * 同步写入
	 *
	 * @param putSingles 单个写入参数
	 */
	@PostMapping(ASYNC_MULTIPLE)
	void asyncPutList(List<PutSingle> putSingles);

	/**
	 * 计算差值写入
	 *
	 * @param putSingles 写入模型
	 * @return true | false
	 */
	@PostMapping(SYNC_PUT_DIFFERENCE)
	R<Object> syncPutDifference(@RequestBody PutSingle putSingles);
}

